#推导式练习题
# info ={
#     'xiaofeng':'35ss',
#     'xiaowang':'2scc'
# }
#按照键从小到大排序
# ret=sorted(info.items(),key=lambda x:x[0])
# print(ret)
# #键值拼接：= 连接
# ["{}={}".format(k,v) for k,v in ret ]
# #每组之间通过&拼接起来
# r="&".join(["{}={}".format(k,v) for k,v in ret ])
# print(r)

# data="&".join(["{}={}".format(k,v) for k,v in sorted(info.items(),key=lambda x:x[0])])
# print(data)


#新浪微博面试题
# data =[lambda x:x+i for i in range(10)]
# v1=data[0](100)
# v2=data[3](100)
# print(v1)

#推导式也是支持嵌套的
# data =[[i,j] for j in range(5) for i in range(6)]
# print(data)

#一副扑克牌
# p_list=[[color,num] for num in range(1,14) for color in ['红桃','黑桃','方片','梅花']]
# print(p_list)


#重点：
# def num():
#     return [lambda x:i*x for i in range(4)] #i=3   四个函数
# ret =[m(2) for m in num()]
# print(ret)

# def num():
#     return (lambda x:i*x for i in range(4)) #返回生成器对象，里面还未执行
# ret =[m(2) for m in num()]
# print(ret)

#匿名函数与推导式结合并不一定就是生成器表达式。
# 生成器表达式是把列表推导式中的方括号[]换成圆括号()。
# 其语法为(expression for item in iterable if condition)。
# 虽然匿名函数可以参与到推导式中，但只有当推导式使用圆括号时，才是生成器表达式。
# 例如，(lambda x:i*x for i in range(4))就是一个生成器表达式。

#模块和包
#from 包.py名 import 函数名
#__int__.py  ->写关于包的注释，版本信息 ；如果导入包里面的某一个模块的时候，该文件会自动加载并执行

